from PIL import Image

def resize_and_replace_colors(input_image_path, output_image_path, size=(64, 64)):
    """
    将输入图像文件缩放为指定大小，并根据灰度值将黑色色块替换为红色，白色色块替换为蓝色。
    
    :param input_image_path: 输入图像文件的路径
    :param output_image_path: 输出图像文件的路径
    :param size: 目标图像的大小，默认为 64×64 像素
    """
    try:
        # 打开输入图像文件
        with Image.open(input_image_path) as image:
            # 缩放图像
            if hasattr(Image, 'Resampling'):
                resampling = Image.Resampling.LANCZOS
            else:
                resampling = Image.ANTIALIAS
            resized_image = image.resize(size, resampling)
            
            # 将图像转换为 RGB 模式（确保图像有 RGB 通道）
            resized_image = resized_image.convert("RGB")
            
            # 获取图像的像素数据
            pixels = resized_image.load()
            
            # 定义黑色和白色的灰度阈值
            black_threshold = 50  # 灰度值小于 50 的视为黑色
            white_threshold = 200  # 灰度值大于 200 的视为白色
            
            # 遍历图像的每个像素
            for x in range(size[0]):
                for y in range(size[1]):
                    r, g, b = pixels[x, y]
                    # 计算灰度值
                    gray_value = (r + g + b) // 3
                    # 检查是否为黑色色块
                    if gray_value < black_threshold:
                        pixels[x, y] = (255, 0, 0)  # 替换为红色
                    # 检查是否为白色色块
                    elif gray_value > white_threshold:
                        pixels[x, y] = (0, 0, 255)  # 替换为蓝色
            
            # 保存修改后的图像
            resized_image.save(output_image_path)
            print(f"图像已成功缩放并替换颜色，保存为 {output_image_path}")
    except Exception as e:
        print(f"处理图像时发生错误：{e}")

# 输入图像路径
input_path = r"C:\Users\jiang\Desktop\code\1f19d04b-c163-4094-bf56-ca0b9e7a6d57.png"
# 输出图像路径
output_path = r"C:\Users\jiang\Desktop\code\resized_image_64x64.png"

# 调用函数进行图像缩放和颜色替换
resize_and_replace_colors(input_path, output_path)